home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Utilities / Commodities / Yak / Source / Prefs / BGUI / Blank_window.c next >
Encoding:
C/C++ Source or Header  |  1996-02-09  |  15.7 KB  |  339 lines

  1. /************************************************************************
  2. *************************  BGUI BLANKER WINDOW  *************************
  3. *************************************************************************/
  4.  
  5. #include <exec/types.h>
  6. #include <intuition/intuition.h>
  7. #include <intuition/classes.h>
  8. #include <intuition/classusr.h>
  9. #include <intuition/imageclass.h>
  10. #include <intuition/gadgetclass.h>
  11. #include <intuition/intuitionbase.h>
  12. #include <libraries/bgui.h>
  13. #include <libraries/bgui_macros.h>
  14. #include <proto/exec.h>
  15. #include <proto/intuition.h>
  16. #include <proto/bgui.h>
  17. #include <proto/wb.h>
  18. #include <clib/alib_protos.h>
  19. #include <string.h>
  20.  
  21. #include "yak.h"
  22. #include "version.h"
  23. #include "gui.h"
  24. #include "Blank_Window.h"
  25. #include "Settings.h"
  26. #include "yak_locale_strings.h"
  27.  
  28. /************************************************************************
  29. *****************************  REFERENCES  ******************************
  30. ************************************************************************/
  31.  
  32. IMPORT LONG (*HandleReturnID)(LONG ID);
  33. IMPORT char *PrefsHelp;
  34.  
  35. /************************************************************************
  36. *****************************  LOCAL DATA  ******************************
  37. ************************************************************************/
  38.  
  39. struct Window   *BlankWnd = NULL;
  40. Object                  *BlankWndObj = NULL;
  41. Object                  *BlankObjects[Blank_CNT];
  42. struct IBox             BlankBox;
  43. BOOL                    BlankBoxValid = FALSE;
  44.  
  45. UBYTE *MBMethod0Labels[4];
  46. UBYTE *ScrBlMethod0Labels[5];
  47.  
  48. /************************************************************************
  49. *************************  CREATEBLANKWINDOW()  *************************
  50. *************************************************************************
  51. * Create the blanker window object tree. Returns the window object ptr or
  52. * NULL if create failed. Gadgets are initialised with default values,
  53. * InitBlankGadgets must be called after window opened to reflect current
  54. * settings.
  55. *
  56. *************************************************************************/
  57.  
  58. APTR CreateBlankWindow(void)
  59. {
  60. Object  *obj;
  61.  
  62. /* put localised strings into mouseblankmethod cycle gadget labels */
  63. MBMethod0Labels[0] = getString(NONE_STRING);
  64. MBMethod0Labels[1] = getString(SPRITES_STRING);
  65. MBMethod0Labels[2] = getString(COPPER_STRING);
  66. MBMethod0Labels[3] = NULL;
  67.  
  68. /* put localised strings into screenblankmethod cycle gadget labels */
  69. ScrBlMethod0Labels[0] = getString(NONE_STRING);
  70. ScrBlMethod0Labels[1] = getString(BLACKSCREEN_STRING);
  71. ScrBlMethod0Labels[2] = getString(DMA_STRING);
  72. ScrBlMethod0Labels[3] = getString(POWERSAVE_STRING);
  73. ScrBlMethod0Labels[4] = NULL;
  74.  
  75. obj = WindowObject,
  76.         WINDOW_PubScreenName, PubScreenName,
  77.         WINDOW_Title,           getString(Blanking),
  78.         WINDOW_ScreenTitle,     getString(COPYRIGHT_STRING),
  79.         WINDOW_SmartRefresh, TRUE,
  80.         WINDOW_SizeBottom,      FALSE,                  /* put size gadget in right border */
  81.         WINDOW_SizeRight,       TRUE,
  82.         WINDOW_AutoAspect,      TRUE,                   /* automatic edges pixel width */
  83.         WINDOW_Position,        POS_CENTERMOUSE,
  84.         (BlankBoxValid ? WINDOW_Bounds : TAG_IGNORE), &BlankBox,
  85.         WINDOW_AppWindow,       TRUE,                   /* make it an appwindow */
  86.         WINDOW_RMBTrap,         TRUE,                   /* trap rmb - no menu */
  87.         WINDOW_CloseGadget,     FALSE,                  /* no windowclose gadget please */
  88.         (TextFont ? WINDOW_Font : TAG_IGNORE),  &Attr,  /* use font if specified */
  89.         WINDOW_HelpFile,        PrefsHelp,              /* online help system */
  90.         WINDOW_HelpNode,        "Blanking",
  91.         WINDOW_MasterGroup,
  92.                 VGroupObject, Spacing(4), HOffset(4), VOffset(4),
  93.                         StartMember,
  94.                                 /* Mouse Blank group */
  95.                                 VGroupObject, Spacing(4), HOffset(6), VOffset(4),
  96.                                                 /* add frame & title to group */
  97.                                                 NeXTFrame,
  98.                                                 FRM_Title,              getString(Blanking),
  99.                                                 FRM_Flags,              FRF_EDGES_ONLY|FRF_CENTER_TITLE|FRF_HIGHLIGHT_TITLE,
  100.                                         VarSpace(DEFAULT_WEIGHT/10),
  101.                                         StartMember,
  102.                                                 CYC_SBMethod = CycleObject,
  103.                                                         LAB_Label,              getString(SCREENBLANK_METHOD_STRING),
  104.                                                         GA_ID,                  GD_ScrBlMethod,
  105.                                                         ButtonFrame,
  106.                                                         CYC_Labels,             ScrBlMethod0Labels,
  107.                                                         CYC_Popup,              TRUE,   /* "drop-down" menu */
  108.                                                 EndObject,
  109.                                         EndMember,
  110.                                         VarSpace(DEFAULT_WEIGHT/10),
  111.                                         StartMember,
  112.                                                 CYC_MBMethod = CycleObject,
  113.                                                         LAB_Label,              getString(MOUSEBLANK_METHOD_STRING),
  114.                                                         GA_ID,                  GD_MBMethod,
  115.                                                         ButtonFrame,
  116.                                                         CYC_Labels,             MBMethod0Labels,
  117.                                                         CYC_Popup,              TRUE,   /* "drop-down" menu */
  118.                                                 EndObject,
  119.                                         EndMember,
  120.                                         VarSpace(DEFAULT_WEIGHT/10),
  121.                                         StartMember,
  122.                                                 CH_BlankMKey = CheckBoxObject,
  123.                                                         LAB_Label,              getString(BlankMouseOnKey_STRING),
  124.                                                         LAB_Place,              PLACE_RIGHT,
  125.                                                         GA_ID,                  GD_BlankMouseOnKey,
  126.                                                         ButtonFrame,
  127.                                                         FRM_Flags,              FRF_EDGES_ONLY,
  128.                                                 EndObject, FixMinWidth, NoAlign,
  129.                                         EndMember,
  130.                                         VarSpace(DEFAULT_WEIGHT/10),
  131.                                 EndObject, Weight(DEFAULT_WEIGHT*3),
  132.                         EndMember,
  133.                         VarSpace(DEFAULT_WEIGHT/10),
  134.                         StartMember,
  135.                                 /* Blank Timeout group */
  136.                                 HGroupObject, VOffset(4),
  137.                                                 /* add frame & title to group */
  138.                                                 NeXTFrame,
  139.                                                 FRM_Title,              getString(TIMEOUT_STRING),
  140.                                                 FRM_Flags,              FRF_EDGES_ONLY|FRF_CENTER_TITLE|FRF_HIGHLIGHT_TITLE,
  141.                                         VarSpace(DEFAULT_WEIGHT),
  142.                                         StartMember,
  143.                                                 VGroupObject, Spacing(2), HOffset(4),
  144.                                                         VarSpace(DEFAULT_WEIGHT/10),
  145.                                                         StartMember,
  146.                                                                 INT_ScrTimeout = StringObject,
  147.                                                                         LAB_Label,              getString(SCREENTIMEOUT_STRING),
  148.                                                                         RidgeFrame,
  149.                                                                         STRINGA_LongVal,0,
  150.                                                                         STRINGA_MaxChars,4,
  151.                                                                         STRINGA_MinCharsVisible,6,
  152.                                                                         STRINGA_Justification,STRINGRIGHT,
  153.                                                                         GA_ID,                  GD_ScrTONum,
  154.                                                                         GA_TabCycle,    TRUE,
  155.                                                                 EndObject,
  156.                                                         EndMember,
  157.                                                         VarSpace(DEFAULT_WEIGHT/10),
  158.                                                         StartMember,
  159.                                                                 INT_MouseTimeout = StringObject,
  160.                                                                         LAB_Label,              getString(MOUSETIMEOUT_STRING),
  161.                                                                         RidgeFrame,
  162.                                                                         STRINGA_LongVal,0,
  163.                                                                         STRINGA_MaxChars,4,
  164.                                                                         STRINGA_MinCharsVisible,6,
  165.                                                                         STRINGA_Justification,STRINGRIGHT,
  166.                                                                         GA_ID,                  GD_MouseTONum,
  167.                                                                         GA_TabCycle,    TRUE,
  168.                                                                 EndObject,
  169.                                                         EndMember,
  170.                                                         VarSpace(DEFAULT_WEIGHT/10),
  171.                                                 EndObject, FixMinWidth,
  172.                                         EndMember,
  173.                                         VarSpace(DEFAULT_WEIGHT),
  174.                                 EndObject, Weight(DEFAULT_WEIGHT*2),
  175.                         EndMember,
  176.                         VarSpace(DEFAULT_WEIGHT/10),
  177.                         StartMember,
  178.                                 HorizSeparator,
  179.                         EndMember,
  180.                         StartMember,
  181.                                 HGroupObject, Spacing(2),
  182.                                         VarSpace(DEFAULT_WEIGHT),
  183.                                         StartMember,
  184.                                                 BT_Return3 = Button(getString(OK_STRING),GD_Return3),
  185.                                         EndMember,
  186.                                         VarSpace(DEFAULT_WEIGHT),
  187.                                 EndObject,
  188.                         EndMember,
  189.                 EndObject,
  190.         EndObject;
  191.  
  192. if (obj)
  193.         {
  194.         /* set tab cycle order between string gadgets */
  195.         DoMethod(obj,WM_TABCYCLE_ORDER,INT_ScrTimeout,INT_MouseTimeout,NULL);
  196.         }
  197.  
  198. return(obj);
  199. }
  200.  
  201. /************************************************************************
  202. **************************  CLOSEBLANKWINDOW()  *************************
  203. *************************************************************************
  204. * Close the blanker window, disposing of the window object.
  205. *
  206. *************************************************************************/
  207.  
  208. void CloseBlankWindow(void)
  209. {
  210. if (BlankWnd)
  211.         {
  212.         GetAttr(WINDOW_Bounds,BlankWndObj,(ULONG *) &BlankBox);
  213.         BlankBoxValid = TRUE;
  214.         }
  215.  
  216. DisposeObject(BlankWndObj);
  217. BlankWndObj = NULL;
  218. BlankWnd = NULL;
  219. }
  220.  
  221. /************************************************************************
  222. *************************  INITBLANKGADGETS()  **************************
  223. *************************************************************************
  224. * Initialize the blank window gadgets to reflect current settings.
  225. *************************************************************************/
  226.  
  227. static void InitBlankGadgets(void)
  228. {
  229. InitToggleGadgets(BLANK_WINDOW);
  230. InitWindowGadget(GDX_ScrTONum, STRINGA_LongVal, blanksecs, BLANK_WINDOW);
  231. InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
  232. InitWindowGadget(GDX_MouseTONum, STRINGA_LongVal, mblanksecs, BLANK_WINDOW);
  233. InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
  234. InitWindowGadget(GDX_MBMethod, CYC_Active, mouseblank, BLANK_WINDOW);
  235. InitWindowGadget(GDX_ScrBlMethod, CYC_Active, screenblank, BLANK_WINDOW);
  236. }
  237.  
  238. /************************************************************************
  239. ************************  HANDLEBLANKRETURNID()  ************************
  240. *************************************************************************
  241. * Handle msgs arriving at blank window - supply the ID returned by BGUI.
  242. * Returns either RET_OKAY or RET_QUIT.
  243. *
  244. *************************************************************************/
  245.  
  246. LONG HandleBlankReturnID(LONG id)
  247. {
  248. LONG    ret,num;
  249.  
  250. ret = RET_OKAY;
  251.  
  252. switch(id)
  253.         {
  254.         case GD_Return3:
  255.                 CloseBlankWindow();
  256.                 if (!ShowWindowID(ROOT_WINDOW))
  257.                         ret= RET_QUIT;
  258.                 break;
  259.  
  260.         case GD_ScrTONum:
  261.                 GetAttr(STRINGA_LongVal,INT_ScrTimeout,(ULONG *)&num);
  262.                 if (num >= 0)
  263.                         blanksecs = num;
  264.                 else 
  265.                         {
  266.                         DisplayBeep(BlankWnd->WScreen);
  267.                         InitWindowGadget(GDX_ScrTONum, STRINGA_LongVal, blanksecs, BLANK_WINDOW);
  268.                         }
  269.                 break;
  270.  
  271.         case GD_MouseTONum:
  272.                 GetAttr(STRINGA_LongVal,INT_MouseTimeout,(ULONG *)&num);
  273.                 if (num >= 0)
  274.                         mblanksecs = num;
  275.                 else
  276.                         {
  277.                         DisplayBeep(BlankWnd->WScreen);
  278.                         InitWindowGadget(GDX_MouseTONum, STRINGA_LongVal, mblanksecs, BLANK_WINDOW);
  279.                         }
  280.                 break;
  281.  
  282.         case GD_BlankMouseOnKey:
  283.                 blankmouseonkey ^= TRUE;
  284.                 break;
  285.  
  286.         case GD_MBMethod:
  287.                 GetAttr(CYC_Active,CYC_MBMethod,(ULONG *)&num);
  288.                 mouseblank = num;
  289.                                 InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
  290.                 break;
  291.  
  292.         case GD_ScrBlMethod:
  293.                 GetAttr(CYC_Active,CYC_SBMethod,(ULONG *)&num);
  294.                 screenblank = num;
  295.                                 InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
  296.                 break;
  297.  
  298.         default:
  299.                 break;
  300.         }
  301.  
  302. return(ret);
  303. }
  304.  
  305. /************************************************************************
  306. **************************  SHOWBLANKWINDOW()  **************************
  307. *************************************************************************
  308. * Create and open the blank window and initialize the gadgets to reflect
  309. * current settings. Sets up HandleReturnID function, curwin, curwinobj
  310. * and curwinID. Returns TRUE or FALSE to indicate success.
  311. *
  312. *************************************************************************/
  313.  
  314. BOOL ShowBlankWindow(void)
  315. {
  316. if (BlankWndObj = (Object *)CreateBlankWindow())
  317.         {
  318.         if (BlankWnd = WindowOpen(BlankWndObj))
  319.                 {
  320.                 InitBlankGadgets();
  321.                 HandleReturnID = HandleBlankReturnID;
  322.                 curwin = BlankWnd;
  323.                 curwinobj = BlankWndObj;
  324.                 curwinID = BLANK_WINDOW;
  325.                 return(TRUE);
  326.                 }
  327.         }
  328.  
  329. CloseBlankWindow();
  330. curwin = NULL;
  331. curwinobj = NULL;
  332. wndsigflag = 0L;
  333. appwinsigflag = 0L;
  334. return(FALSE);
  335. }
  336.  
  337.  
  338.